package airthmetic.exercise.hash;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class _49_字母异位词分组 {

    public List<List<String>> groupAnagrams(String[] strs) {
        if(strs == null || strs.length == 0){
            return new ArrayList();
        }
        HashMap<String,List<String>> map = new HashMap<String,List<String>>();
        for(int i=0; i<strs.length; i++){
            String s = strs[i];
            String h = hash(s);
            if(!map.containsKey(h)){
                map.put(h,new ArrayList<String>());
            }
            map.get(h).add(s);
        }

        return new ArrayList<List<String>>(map.values());
    }

    public String hash(String value){
        int[] nums = new int[26];
        for(int i=0; i< value.length();i++){
            char c = value.charAt(i);
            nums[c - 'a']++;
        }

        StringBuilder sb = new StringBuilder();
        for(int i=0; i<nums.length; i++){
            sb.append(nums[i]);
            sb.append('-');
        }

        return sb.toString();

    }
}
